home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
CU Amiga Super CD-ROM 16
/
CU Amiga Magazine's Super CD-ROM 16 (1997-10-16)(EMAP Images)(GB)[!][issue 1997-11].iso
/
CUCD
/
Online
/
HBBS
/
Source
/
Common
/
Shared.c
< prev
next >
Wrap
Text File
|
1997-08-22
|
11KB
|
257 lines
void ClearNodeData(struct NodeSettingsData *NS) // different to InitNodeData() in Control_Main.c
{
// small subroutine to set all the default values
// never call if you've allocated mem for strings!
NS->SysopAccount=NULL;
NS->NodeName=NULL;
NS->NodePhone=NULL;
NS->NodeConnectScript=NULL;
NS->AskUserPW=FALSE;
NS->UseSysPW=FALSE;
NS->SysPW=NULL;
NS->SysPWScript=NULL;
NS->SysPWPrompt=NULL;
NS->UseNodePW=FALSE;
NS->NodePW=NULL;
NS->NodePWScript=NULL;
NS->NodePWPrompt=NULL;
NS->UserNamePrompt=NULL;
NS->UserPWPrompt=NULL;
NS->NodeLogFile=NULL;
NS->ModemLogFile=NULL;
NS->CallersLogFile=NULL;
NS->UploadLog=FALSE;
NS->DownloadLog=FALSE;
NS->DoorLogFile=NULL;
NS->DoorLog=FALSE;
NS->ChatFlag=FALSE;
NS->Iconified=FALSE;
NS->UseOwnScreen=FALSE;
NS->StartScreen=FALSE;
NS->AccessRequired=0;
NS->ScrModeID=0;
NS->ScrWidth=0;
NS->ScrHeight=0;
NS->ScrDepth=0;
NS->UseDevice=FALSE;
NS->AllowNewUsers=FALSE;
NS->NodePlayPen=NULL;
NS->MaxDIZLines=0;
NS->InactivityDisconnectOverride=FALSE;
NS->InactivitySeconds=0;
}
void SetNodeSettingsDefaults(struct NodeSettingsData *NS) // different to InitNodeData() in Control_Main.c
{
// small subroutine to set all the default values
FreeAndSet(&NS->SysPW,"PASSWORD");
FreeAndSet(&NS->SysPWPrompt,"System PW:");
FreeAndSet(&NS->NodePW,"PASSWORD");
FreeAndSet(&NS->NodePWPrompt,"Node PW:");
FreeAndSet(&NS->UserNamePrompt,"Username:");
FreeAndSet(&NS->UserPWPrompt,"Password:");
NS->AskUserPW=TRUE;
NS->UploadLog=TRUE;
NS->DownloadLog=TRUE;
NS->ChatFlag=TRUE;
NS->UseOwnScreen=TRUE;
NS->AccessRequired=0;
NS->UseDevice=FALSE;
NS->ScrModeID=BBSGlobal->ScreenInfo.ScrModeID;
NS->ScrWidth= BBSGlobal->ScreenInfo.ScrWidth;
NS->ScrHeight=BBSGlobal->ScreenInfo.ScrHeight;
NS->ScrDepth=BBSGlobal->ScreenInfo.ScrDepth;
NS->AllowNewUsers=TRUE;
NS->MaxDIZLines=12;
NS->InactivitySeconds=120; // 2 mins.
}
void CopyNodeSettings(struct NodeSettingsData *dest,struct NodeSettingsData *source)
{
FreeAndSet(&dest->SysopAccount ,source->SysopAccount);
FreeAndSet(&dest->NodeName ,source->NodeName);
FreeAndSet(&dest->NodePhone ,source->NodePhone);
FreeAndSet(&dest->NodeConnectScript ,source->NodeConnectScript);
dest->AskUserPW =source->AskUserPW;
dest->UseSysPW =source->UseSysPW;
FreeAndSet(&dest->SysPW ,source->SysPW);
FreeAndSet(&dest->SysPWScript ,source->SysPWScript);
FreeAndSet(&dest->SysPWPrompt ,source->SysPWPrompt);
dest->UseNodePW =source->UseNodePW;
FreeAndSet(&dest->NodePW ,source->NodePW);
FreeAndSet(&dest->NodePWScript ,source->NodePWScript);
FreeAndSet(&dest->NodePWPrompt ,source->NodePWPrompt);
FreeAndSet(&dest->UserNamePrompt ,source->UserNamePrompt);
FreeAndSet(&dest->UserPWPrompt ,source->UserPWPrompt);
FreeAndSet(&dest->NodeLogFile ,source->NodeLogFile);
FreeAndSet(&dest->ModemLogFile ,source->ModemLogFile);
FreeAndSet(&dest->CallersLogFile ,source->CallersLogFile);
FreeAndSet(&dest->DoorLogFile ,source->DoorLogFile);
dest->DoorLog =source->DoorLog;
dest->UploadLog =source->UploadLog;
dest->DownloadLog =source->DownloadLog;
dest->ChatFlag =source->ChatFlag;
dest->Iconified =source->Iconified;
dest->UseOwnScreen =source->UseOwnScreen;
dest->StartScreen =source->StartScreen;
dest->AccessRequired =source->AccessRequired;
dest->ScrModeID =source->ScrModeID;
dest->ScrWidth =source->ScrWidth;
dest->ScrHeight =source->ScrHeight;
dest->ScrDepth =source->ScrDepth;
dest->UseDevice =source->UseDevice;
dest->AllowNewUsers =source->AllowNewUsers;
FreeAndSet(&dest->NodePlayPen ,source->NodePlayPen);
dest->MaxDIZLines =source->MaxDIZLines;
dest->InactivitySeconds =source->InactivitySeconds;
dest->InactivityDisconnectOverride =source->InactivityDisconnectOverride;
}
void FreeNodeSettingsData(struct NodeSettingsData *NS) // different to InitNodeData() in Control_Main.c
{
FreeStr(NS->SysopAccount);
FreeStr(NS->NodeName);
FreeStr(NS->NodePhone);
FreeStr(NS->NodeConnectScript);
FreeStr(NS->SysPW);
FreeStr(NS->SysPWScript);
FreeStr(NS->SysPWPrompt);
FreeStr(NS->NodePW);
FreeStr(NS->NodePWScript);
FreeStr(NS->NodePWPrompt);
FreeStr(NS->UserNamePrompt);
FreeStr(NS->UserPWPrompt);
FreeStr(NS->NodeLogFile);
FreeStr(NS->ModemLogFile);
FreeStr(NS->CallersLogFile);
FreeStr(NS->DoorLogFile);
FreeStr(NS->NodePlayPen);
}
V_ERROR LoadNodeSettingsData(ULONG NodeNum,struct NodeSettingsData *NS )
{
struct CfgFileData *NodeCFG;
V_ERROR error=TYPE_NONE;
UBYTE *filename=NULL;
struct NodeData *ND;
UBYTE ecode=0;
if (NodeNum==NODE_GLOBAL) // as opposed to a valid nodenumber... hmm, does this mean we are limited to ULONG nodes ? :-))))))
{
// only clear for global
ClearNodeData(NS);
SetNodeSettingsDefaults(NS);
filename=FILE_NODEGLOBAL;
}
else
{
if (ND=(struct NodeData*)GetNode(BBSGlobal->NodeList,NodeNum))
{
// erk, i can't belive i did this... vvvvvvvvvvvvvvvvvvvvvvvvv
if (filename=AllocVec(strlen(ND->NodeLocation)+30/*strlen(FILENAME_NODELOCAL)+1*/,MEMF_PUBLIC))
{
strcpy(filename,ND->NodeLocation);
strcat(filename,FILENAME_NODELOCAL);
}
}
}
if (filename)
{
if (NodeCFG=HBBS_LoadConfig(filename,LCFG_NONE))
{
// get settings!
if (!HBBS_GetSetting(NodeCFG,(void *)&NS->SysopAccount ,VTYPE_STRING,OPT_NODE_SysopAccount,OPT_SINGLE) && NodeNum==NODE_GLOBAL) ecode=1; // *C* document required presence in NodeGlobal
if (!HBBS_GetSetting(NodeCFG,(void *)&NS->NodeName ,VTYPE_STRING,OPT_NODE_NodeName,OPT_SINGLE) && NodeNum!=NODE_GLOBAL) ecode=2;
if (!HBBS_GetSetting(NodeCFG,(void *)&NS->NodePhone ,VTYPE_STRING,OPT_NODE_NodePhone,OPT_SINGLE) && NodeNum!=NODE_GLOBAL) ecode=3;
if (!HBBS_GetSetting(NodeCFG,(void *)&NS->NodeConnectScript,VTYPE_STRING,OPT_NODE_NodeConnectScript,OPT_SINGLE) && NodeNum!=NODE_GLOBAL) ecode=4;
HBBS_GetSetting(NodeCFG,(void *)&NS->AskUserPW ,VTYPE_BOOL,OPT_NODE_AskUserPW ,OPT_SINGLE);
if (!HBBS_GetSetting(NodeCFG,(void *)&NS->UseSysPW ,VTYPE_BOOL,OPT_NODE_UseSysPW ,OPT_SINGLE) && NodeNum!=NODE_GLOBAL) ecode=5;
HBBS_GetSetting(NodeCFG,(void *)&NS->SysPW ,VTYPE_STRING,OPT_NODE_SysPW,OPT_SINGLE);
HBBS_GetSetting(NodeCFG,(void *)&NS->SysPWScript ,VTYPE_STRING,OPT_NODE_SysPWScript,OPT_SINGLE);
HBBS_GetSetting(NodeCFG,(void *)&NS->SysPWPrompt ,VTYPE_STRING,OPT_NODE_SysPWPrompt ,OPT_SINGLE);
if (!HBBS_GetSetting(NodeCFG,(void *)&NS->UseNodePW ,VTYPE_BOOL,OPT_NODE_UseNodePW ,OPT_SINGLE) && NodeNum!=NODE_GLOBAL) ecode=6;
HBBS_GetSetting(NodeCFG,(void *)&NS->NodePW ,VTYPE_STRING,OPT_NODE_NodePW,OPT_SINGLE);
HBBS_GetSetting(NodeCFG,(void *)&NS->NodePWScript ,VTYPE_STRING,OPT_NODE_NodePWScript,OPT_SINGLE);
HBBS_GetSetting(NodeCFG,(void *)&NS->NodePWPrompt ,VTYPE_STRING,OPT_NODE_NodePWPrompt ,OPT_SINGLE);
HBBS_GetSetting(NodeCFG,(void *)&NS->UserNamePrompt ,VTYPE_STRING,OPT_NODE_UserNamePrompt ,OPT_SINGLE);
HBBS_GetSetting(NodeCFG,(void *)&NS->UserPWPrompt ,VTYPE_STRING,OPT_NODE_UserPWPrompt ,OPT_SINGLE);
if (!HBBS_GetSetting(NodeCFG,(void *)&NS->NodeLogFile ,VTYPE_STRING,OPT_NODE_NodeLogFile,OPT_SINGLE) && NodeNum!=NODE_GLOBAL) ecode=7;
if (!HBBS_GetSetting(NodeCFG,(void *)&NS->ModemLogFile ,VTYPE_STRING,OPT_NODE_ModemLogFile ,OPT_SINGLE) && NodeNum!=NODE_GLOBAL) ecode=8;
if (!HBBS_GetSetting(NodeCFG,(void *)&NS->CallersLogFile ,VTYPE_STRING,OPT_NODE_CallersLogFile ,OPT_SINGLE) && NodeNum!=NODE_GLOBAL) ecode=9;
if (!HBBS_GetSetting(NodeCFG,(void *)&NS->DoorLogFile ,VTYPE_STRING,OPT_NODE_DoorLogFile ,OPT_SINGLE) && NodeNum!=NODE_GLOBAL) ecode=10;
HBBS_GetSetting(NodeCFG,(void *)&NS->DoorLog ,VTYPE_BOOL,OPT_NODE_DoorLog ,OPT_SINGLE);
HBBS_GetSetting(NodeCFG,(void *)&NS->UploadLog ,VTYPE_BOOL,OPT_NODE_UploadLog ,OPT_SINGLE);
HBBS_GetSetting(NodeCFG,(void *)&NS->DownloadLog ,VTYPE_BOOL,OPT_NODE_DownloadLog ,OPT_SINGLE);
HBBS_GetSetting(NodeCFG,(void *)&NS->ChatFlag ,VTYPE_BOOL,OPT_NODE_ChatFlag ,OPT_SINGLE);
HBBS_GetSetting(NodeCFG,(void *)&NS->Iconified ,VTYPE_BOOL,OPT_NODE_Iconified ,OPT_SINGLE);
HBBS_GetSetting(NodeCFG,(void *)&NS->UseOwnScreen ,VTYPE_BOOL,OPT_NODE_UseOwnScreen ,OPT_SINGLE);
HBBS_GetSetting(NodeCFG,(void *)&NS->StartScreen ,VTYPE_BOOL,OPT_NODE_StartScreen ,OPT_SINGLE);
HBBS_GetSetting(NodeCFG,(void *)&NS->AccessRequired ,VTYPE_SMALLNUM,OPT_NODE_AccessRequired,OPT_SINGLE);
HBBS_GetSetting(NodeCFG,(void *)&NS->ScrModeID ,VTYPE_BIGNUM,OPT_NODE_ScrModeID,OPT_SINGLE);
HBBS_GetSetting(NodeCFG,(void *)&NS->ScrHeight ,VTYPE_BIGNUM,OPT_NODE_ScrHeight,OPT_SINGLE);
HBBS_GetSetting(NodeCFG,(void *)&NS->ScrWidth ,VTYPE_BIGNUM,OPT_NODE_ScrWidth,OPT_SINGLE);
HBBS_GetSetting(NodeCFG,(void *)&NS->ScrDepth ,VTYPE_BIGNUM,OPT_NODE_ScrDepth,OPT_SINGLE);
HBBS_GetSetting(NodeCFG,(void *)&NS->UseDevice ,VTYPE_BOOL,OPT_NODE_UseDevice ,OPT_SINGLE);
HBBS_GetSetting(NodeCFG,(void *)&NS->AllowNewUsers ,VTYPE_BOOL,OPT_NODE_AllowNewUsers ,OPT_SINGLE);
if (!HBBS_GetSetting(NodeCFG,(void *)&NS->NodePlayPen ,VTYPE_PATH,OPT_NODE_NodePlayPen ,OPT_SINGLE) && NodeNum!=NODE_GLOBAL) ecode=11;
HBBS_GetSetting(NodeCFG,(void *)&NS->MaxDIZLines ,VTYPE_SMALLNUM,OPT_NODE_MaxDIZLines ,OPT_SINGLE);
HBBS_GetSetting(NodeCFG,(void *)&NS->InactivityDisconnectOverride,VTYPE_BOOL,OPT_NODE_InactivityDisconnectOverride,OPT_SINGLE);
HBBS_GetSetting(NodeCFG,(void *)&NS->InactivitySeconds,VTYPE_BIGNUM,OPT_NODE_InactivitySeconds ,OPT_SINGLE);
HBBS_FlushConfig(NodeCFG);
}
if (ecode)
{
HBBS_DoErrorMessage(EMSG_NODESETTINGS+ecode-1,NodeNum,filename);
error=TYPE_FATAL;
}
if (NodeNum!=NODE_GLOBAL) FreeVec(filename);
}
return(error);
}